#include<iostream>
#include<string>

template<typename T>
void print(const T &val) {
    std::cout << "val:" << val << std::endl;
}

template<>
void print(const std::string &val) {
    std::cout << "str val:" << val << std::endl;
}

int main() {

    print(1);
    print(3.3);

    std::string str = "this is a string.";
    print(str);

    return 0;
}